package org.dromara.quick.chat.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.quick.chat.model.bo.create.ImSocialPostBO;
import org.dromara.quick.chat.model.bo.query.ImSocialPostQueryBO;
import org.dromara.quick.chat.model.vo.ImSocialPostBasicVO;
import org.dromara.quick.chat.model.vo.ImSocialPostDetailVO;
import org.dromara.quick.chat.model.vo.ImSocialPostVO;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
* @author Stars
* @description 针对表【im_social_post(社交软件中的动态表，用于存储用户发布的动态相关信息)】的数据库操作Service
* @createDate 2025-03-06 22:01:35
*/
public interface ImSocialPostService {


    /**
     * 根据用户查询动态基本信息 - 陌生用户查询朋友圈使用 - 扫描跳转到的用户页面
     * @param userId
     * @param pageSize
     * @return
     */
    List<ImSocialPostBasicVO> selectImSocialPostListByUserId(Long userId,Long pageSize);

    /**
     * 动态总数量
     * @param userId
     * @return
     */
    Long postTotal(Long userId);


    /**
     * 添加动态
     */
    void addSocialPost(@RequestBody ImSocialPostBO imSocialPostBO);


    /**
     * 查询朋友圈
     */
    List<ImSocialPostVO> listSocialPost(ImSocialPostQueryBO imSocialPostQueryBO);

    /**
     * 查询用户朋友圈
     * <p>
     *     如果指定用户id 就根据用户id查询，没有指定就使用当前用户的id
     * </p>
     */
    List<ImSocialPostVO> listSocialPostByUserId(ImSocialPostQueryBO imSocialPostQueryBO);


    /**
     * 距离有近到远搜索
     *
     * @param imSocialPostQueryBO
     * @return
     */
    List<ImSocialPostVO> findEntitiesByLocation(ImSocialPostQueryBO imSocialPostQueryBO);

    /**
     * 用户点赞
     */
    void like(Long socialPostId);


    /**
     * 查询朋友圈明细
     */
    ImSocialPostDetailVO detailSocialComment(Long socialPostId, PageQuery pageQuery);

    /**
     * 更改评论数量
     */
    void commentLike(Long socialPostId);
}
